package com.ddwl.common.annotation;


import com.ddwl.common.constant.LimitType;
import com.ddwl.common.constant.LimitWay;

import java.lang.annotation.*;


/**
 * @author zach
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Limit {

    /**
     * 名字
     */
    String name() default "";

    /**
     * key
     */
    String key() default "";

    /**
     * Key的前缀
     */
    String prefix() default "";

    /**
     * 给定的时间范围 单位(秒)
     */
    int period() default 0;

    /**
     * 一定时间内最多访问次数
     */
    int count();

    /**
     * 限流的类型(用户自定义key 或者 请求ip)
     */
    LimitType limitType() default LimitType.CLASS_METHOD;

    /**
     * 限流的方式(cache，db)
     */
    LimitWay limitWay() default LimitWay.CACHE;

    /**
     * 返回的错误信息
     * @return
     */
    String errMsg() default "";
}
